package com.sgc.view;

import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import com.architecture.view.PadraoManutencaoMB;
import com.archtecture.control.enums.TipoOrdenacao;
import com.archtecture.control.exceptions.NegocioException;
import com.sgv.model.entities.CategoriaModel;
import com.sgv.model.entities.ProdutoModel;
import com.sgv.model.persistence.UsuarioFacadeLocal;

@ManagedBean(name = "produtoMB")
@ViewScoped
public class ProdutoMB extends PadraoManutencaoMB<ProdutoModel> {

	@EJB
	private UsuarioFacadeLocal segurancaFacade;

	private List<CategoriaModel> listCategoria;

	public void calcularValorLucro() {
		if (getModelCad().getValorCusto() != null && getModelCad().getValorVenda() != null) {
			// x = (VV - VC) * 100 / VC
			getModelCad().setLucro(
					(getModelCad().getValorVenda() - getModelCad().getValorCusto()) * 100 / getModelCad().getValorCusto() / 100);

		}
	}

	@Override
	protected ProdutoModel getInstance() {
		ProdutoModel lModel = new ProdutoModel();
		lModel.setCategoria(new CategoriaModel());
		return lModel;
	}

	@Override
	protected void prepararSalvar() throws NegocioException {
		super.prepararSalvar();

		if (segurancaFacade.verificarPermissao("VENDEDOR")) {
			getModelCad().setFlPreCadastro("S");
		}

		else {
			getModelCad().setFlPreCadastro("N");
		}
	}

	@Override
	protected void prepararEditar() throws NegocioException {
		super.prepararEditar();
		prepararSalvar();
	}

	@SuppressWarnings("unchecked")
	public List<CategoriaModel> getListCategoria() {
		if (listCategoria == null) {
			listCategoria = montarCombo(new CategoriaModel(), TipoOrdenacao.ASC, "nome");
		}
		return listCategoria;
	}

	public boolean isPermiteVisualizar() {
		return segurancaFacade.verificarPermissao("ADMINISTRADOR", "GERENTE");
	}
}
